package converter;

import java.lang.reflect.Type;

/**
 * 这是一个自定义的 HTTP 消息转换器，用于处理 multipart/form-data 请求中的 JSON 数据部分
 */
//所有写入方法都返回 false，意味着：
//        这个转换器只用于读取请求（反序列化）
//        不用于生成响应（序列化）
//    专门解决 @RequestPart 中复杂对象的反序列化问题
@Component
public class MultipartJackson2HttpMessageConverter extends AbstractJackson2HttpMessageConverter {
    protected MultipartJackson2HttpMessageConverter(ObjectMapper objectMapper) {
        // MediaType.APPLICATION_OCTET_STREAM 表示这个转换器用于处理二进制流数据，通常用于文件上传。
        super(objectMapper, MediaType.APPLICATION_OCTET_STREAM);
    }

    @Override
    public boolean canWrite(Class<?> clazz, MediaType mediaType) {
        // 转换器不用于写入（即不用于响应的序列化）
        // 禁用写入功能
        return false;
    }

    @Override
    public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType) {
        // 禁用写入功能
        return false;
    }

    @Override
    protected boolean canWrite(MediaType mediaType) {
        // 禁用写入功能
        return false;
    }
}
